package com.common.config;

//import cn.dev33.satoken.stp.StpUtil;
//import cn.hutool.core.util.StrUtil;
//import com.entity.sys.SysUser;
//import com.service.sys.SysUserService;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.Signature;
//import org.aspectj.lang.annotation.After;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.aspectj.lang.reflect.MethodSignature;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.Resource;
//import java.lang.reflect.Method;
//
///**
// * 数据过滤处理
// */
//@Aspect
//@Component
//public class DataScopeAspect {
//
//    public static final ThreadLocal DATA_AUTH_THREAD_LOCAL = new ThreadLocal();
//
//    @Resource
//    private SysUserService sysUserService;
//
//    // 配置织入点
//    @Pointcut("@annotation(DataScope)")
//    public void dataScopePointCut() { }
//
//    @Before("dataScopePointCut()")
//    public void doBefore(JoinPoint point){
//        DATA_AUTH_THREAD_LOCAL.remove();
//        handleDataAuthScope(point);
//    }
//
//    @After("@annotation(DataScope)")
//    public void doAfter(){
//        //清空数据权限拼接SQL
//        DATA_AUTH_THREAD_LOCAL.remove();
//    }
//
//    /**
//     * 处理数据权限
//     * @param joinPoint     切面
//     */
//    protected void handleDataAuthScope(final JoinPoint joinPoint) {
//        // 获取当前的用户
//        SysUser user = (SysUser) StpUtil.getSession().get("user");
//        if (null == user) {
//            return;
//        }
//        Signature signature = joinPoint.getSignature();
//        MethodSignature methodSignature = (MethodSignature) signature;
//        Method method = methodSignature.getMethod();
//        DataScope dataScope = method.getAnnotation(DataScope.class);
//        // 获取当前用户要拼接的数据权限条件
//        String str = sysUserService.queryApplyScope(dataScope.fieldName(), dataScope.createBy(), dataScope.type());
//        if (StrUtil.isNotBlank(str)){
//            //设置数据权限拼接sql
//            DATA_AUTH_THREAD_LOCAL.set(str);
//        }
//    }
//}
